// JavaScript source code
Forguncy.Page.ready(function () {

    var priceColIndex = 8;
    var countColIndex = 9;
    var totalColIndex = 10;
    var isSettingValue = false;

    var listview = Forguncy.Page.getListView("表格1");

    var updateCount = function (row) {
        var total = listview.getValue(row, totalColIndex);
        if (total == null) {
            return false
        }
        var price = listview.getValue(row, priceColIndex);
        if (price == null) {
            return false
        }

        var count = total / price - 1;
        isSettingValue = true;
        listview.setValue(row, countColIndex, count);
        isSettingValue = false;

        return true;
    }

    var updatePrice = function (row) {
        var total = listview.getValue(row, totalColIndex);
        if (total == null) {
            return false
        }
        var count = listview.getValue(row, countColIndex);
        if (count == null) {
            return false
        }

        var price = total / (count+1);
        isSettingValue = true;
        listview.setValue(row, priceColIndex, price);
        isSettingValue = false;

        return true;
    }

    var updateTotal = function (row) {
        var price = listview.getValue(row, priceColIndex);
        if (price == null) {
            return false
        }
        var count = listview.getValue(row, countColIndex);
        if (count == null) {
            return false
        }

        var total = price * (count+1);
        isSettingValue = true;
        listview.setValue(row, totalColIndex, total);
        isSettingValue = false;

        return true;
    }

    listview.bind(Forguncy.ListViewEvents.ValueChanged, function (arg1, arg2) {
        if (isSettingValue) {
            return;
        }

        var row = arg2.CellRanges[0].Row;
        var col = arg2.CellRanges[0].Column;
        if (row >= 0 && col >= 0) {
            if (col === priceColIndex) {
                if (!updateTotal(row)) {
                    updateCount(row);
                }
            }
            else if (col === countColIndex) {
                if (!updateTotal(row)) {
                    updatePrice(row);
                }
            }
            else if (col === totalColIndex) {
                if (!updatePrice(row)) {
                    updateCount(row);
                }
            }
        }
    });
});